home *** CD-ROM | disk | FTP | other *** search
/ User's Choice Windows CD / User's Choice Windows CD (CMS Software)(1993).iso / win_u_z / wn31apps.zip / COMPAT.EXE / COMPAT.TXT
Text File  |  1992-04-16  |  16KB  |  312 lines

  1. Description of the Windows 3.1 WIN.INI [compatibility] section 
  2.  
  3. Summary:
  4. This article discusses the [compatibility] section of Microsoft Windows operating 
  5. system version 3.1's WIN.INI.
  6.  
  7. Compatibility bits are defined for the following applications:
  8. Publisher, MS Money, MS Works, Word Perfect, Freelance, CC Mail, Visual Basic, Ami 
  9. Pro, Pixie, ObjectVision, Cricket Presents, Just Write, ExploreNet, Aporia, Packrat, 
  10. Microcourier, Guide, Excel, Ascend, MGX Draw, AccPack, Charisma, Persuasion, 
  11. Ingress, Lotus Notes, MS Draw,Turbo Tax.
  12.  
  13. Compatibility bits do not affect applications compiled for version 3.1 of Windows: 
  14. only apps for 3.0 or earlier are affected.  At load time of an application, the 
  15. kernel checks the version and module name and determines if any bits are defined for 
  16. that name.  If there are, these are stored and then at run time, each api which has 
  17. compatibility bits associated with it asks kernel if these are in effect for the 
  18. module calling it. Note that compatability bits are only checked against application 
  19. module name -- not .DLL module names.
  20.  
  21. More Information:
  22. The following is a detailed explanation of the compatibility bits and the 
  23. applications they apply to.  The problem, listed for each app, is what having the 
  24. compatibility bit defined fixes.  If the switches are in win.ini, none of these 
  25. problems occur anymore.  Setup automatically puts the switches in win.ini, 
  26. regardless of whether that app is on the machine or not.
  27.  
  28. The compatibility bits are shown as hex constants in the win.ini [Compatibility] 
  29. section.  If more than one bit applies to a module, then the constant used is the 
  30. logical OR of the bits that apply.
  31.  
  32. The symbolic name is the name for the bit used internally by Microsoft: these names 
  33. cannot be used in win.ini.
  34.  
  35. Bit: 0x0001
  36. Symbolic name: GACF_IGNORENODISCARD
  37. Meaning: Ignore NODISCARD flag if passed to GlobalAlloc(). C 6.x Runtime install 
  38. library was allocating global memory improperly by incorrectly specifying the 
  39. GMEM_NODISCARD bit.
  40. Apps:Publisher        Winini Line: notshell=0x0001
  41.     Problem: Setup for MS apps doesn't work on 1M 286 machine.
  42. Money        notshell=0x0001
  43.     Problem: Setup for MS apps doesn't work on 1M 286 machine.
  44. Works        notshell=0x0001
  45.     Problem: Setup for MS apps doesn't work on 1M 286 machine.
  46.  
  47. Bit: 0x00000002
  48. Symbolic name: GACF_FORCETEXTBAND
  49. Meaning: Separate text band from graphics band.  Forces separate band for text, 
  50. disallowing 3.1 optimization where Text and Graphics are printed in the same band.  
  51. Word Perfect was assuming text had to go in second band.
  52. Apps:Word Perfect     WPWINFIL=0x0006
  53.     Problem: Can't print graphics in landscape mode.  The compatibility switch 
  54. doesn't completely fix the problem, just fixes it for certain memory configurations.
  55. Freelance        rem=0x8022
  56.     Problem: Freelance couldn't print presentation (.pre) files.
  57.  
  58. Bit: 0x00000004
  59. Symbolic name: GACF_ONELANDGRXBAND    
  60. Meaning: One graphics band only. Allow only one Landscape graphics band.  Take as 
  61. much memory as possible for this band.  What doesn't fit in that band doesn't print.
  62. Apps: Word Perfect    WPWINFIL=0x0006
  63.     Problem: Can't print graphics in landscape mode.  The compatibility switch 
  64. doesn't completely fix the problem, just fixes it for certain memory configurations.
  65.  
  66. Bit: 0x00000008
  67. Symbolic name: GACF_IGNORETOPMOST
  68. Meaning: Ignore topmost windows for GetWindow(HWND,GW_HWNDFIRST)
  69. Apps: ccmail        ccmail=0x0008
  70.     Problem: CCMail would GP fault when running any Windows applet from CCMail 
  71. because it assumed the applet it starts will be at the top of the window list when 
  72. winexec returns.  Because of the addition of TOPMOST windows in Win 3.1, this isn't 
  73. the case.  The compatibility bit fixes this so GetWindow doesn't return a topmost 
  74. window.
  75.  
  76. Bit: 0x00000010
  77. Symbolic name: GACF_CALLTTDEVICE
  78. Meaning: Set the DEVICE_FONTTYPE bit in the FontType for TT fonts                 
  79. returned by EnumFonts().
  80. Apps: AmiPro        Amipro=0x0010
  81.     Problem: Font mapping problems, described below.
  82. Word Perfect    win2wrs=0x1210
  83.     Problem: WordPerfect was assuming TT fonts enumerated by the printer would 
  84. have the device bit set.  TT fonts aren't device fonts, so this bit wasn't set.  
  85. There were various font mapping problems, such as TNR appearing in Script or Symbol.
  86.  
  87. Bit: 0x00000020
  88. Symbolic name: GACF_MULTIPLEBANDS
  89. Meaning: Manually break graphics output into more than one band when                 
  90. printing.
  91. Apps: Freelance    Rem=0x08022
  92.     Problem: Freelance wouldn't print graphics when there was enough memory and 
  93. unidrv used only one band for printing.  If the first band was the entire page, it 
  94. didn't issue any graphics calls, thinking it was the text only band.  This forces 
  95. unidrv to use multiple bands.
  96.  
  97. Bit: 0x00000040
  98. Symbolic name: GACF_ALWAYSSENDNCPAINT
  99. Meaning: SetWindowPos() must send a WM_NCPAINT message to all children, disallowing 
  100. the 3.1 optimization where this message is only sent to windows that must be 
  101. redrawn.
  102. Apps: Pixie        pixie=0x0040
  103.     Problem: File window overlaps the toolbox and doesn't repaint when a new file 
  104. is opened.  Pixie used the receipt of WM_NCPAINT messages to determine that they may 
  105. need to reposition themselves at the top of the list.  Win 3.0 used to send the 
  106. messages to windows even when they didn't need to be sent; in particular if the 
  107. window was within the bounding rect of any update region involved in a window 
  108. management operation.
  109. ObjectVision    Vision=0x0040
  110.     Problem: Repaint problems with dialog boxes left on the screen after file.open 
  111. or file.new operations.
  112. Cricket Presents    cp=0x0040
  113.     Problem: Tool window is not available when opening the app.
  114.  
  115. Bit: 0x00000080
  116. Symbolic name: GACF_EDITSETTEXTMUNGE
  117. Meaning: Strings that are passed to Edit Controls by WM_SETTEXT are forced to upper 
  118. case.  Just write was expecting this behavior, which was a bug in 3.0.  
  119. Apps: Just write    JW=0x42080
  120.     Problem: Just Write wouldn't change the extension in the file.open dialog when 
  121. opening a file of a different format.  Just Write calls SetDlgItemText to set the 
  122. default extension in edit controls during WM_INITDIALOG processing.  SetDlgItemText 
  123. ultimately calls text insert routine which had a bug in 3.0 where it converted the 
  124. case of the text passed in dependent on edit control style.  Thus, under 3.0, 
  125. SetDlgItemText was (wrongly) modifying the string passed in.  The app has worked 
  126. around the bug in 3.0 and is now failing in 3.1 since the bug has been fixed.  The 
  127. compatibility bit reverts to 3.0 behaviour.
  128.  
  129. Bit: 0x00000100
  130. Symbolic name: GACF_MOREEXTRAWNDWORDS
  131. Meaning: Add 4 to the extra bytes (CBWNDEXTRA) in the window instance and class 
  132. instance structures. In Windows 3.0, even if you didn't allocate extra window/class 
  133. words, you could still access them and corrupt Windows internally. In Windows 3.1, 
  134. we don't allow you to access extra words you didn't allocate so that apps wouldn't 
  135. corrupt windows. This switch forces extra words for all classes/windows created by 
  136. the given application.
  137. Apps:Compton's MM Ency.    TME=0x0100
  138.     Problem: Crashes choosing atlas.  Caused by not initializing the 
  139. WNDCLASS.cbWndExtra field.
  140. ExploreNet    netset2=0x0100
  141.     Problem: Application error selecting update in "Input Form" window.  Caused by 
  142. the app specifying 0 extra bytes when creating the window class.
  143. Aporia 1.4     aporia=0x0100
  144.     Problem: Aporia icons don't appear on the desktop.  Hangs the system.  App 
  145. says it wants 1 extra byte in the RegisterClass, then does a SetWindowWord (2 
  146. bytes), then GetWindowLong (4 Bytes).
  147.  
  148. Bit: 0x00000200
  149. Symbolic name: GACF_TTIGNORERASTERDUPE
  150. Meaning: Don't enumerate Duplicate bitmap fonts for TT fonts. Times New Roman was 
  151. displayed and printed as a vector font.  We install bitmap fonts for Arial and Times 
  152. New Roman at sizes 8,10 (EGA resolution). When we enumerate fonts for face names 
  153. Arial and Times New Roman, we would enumerate the sizes available in the bitmap 
  154. fonts and one size for the corresponding truetype font. This confused the font 
  155. mapper in WordPerfect. It would somehow get confused into believing that a TNR font 
  156. was available for only the two bitmap sizes and map a request for a larger size to a 
  157. Roman vector font.
  158. Apps: Word Perfect    Win2wrs=0x01210
  159.     Problem: Some fonts displayed as vector fonts.  GDI will not enumerate raster 
  160. fonts which have the same face or family name as a TT font if TT is enabled and the 
  161. compatibility bit is set.
  162. Visual Basic    vb=0x0200
  163.     Problem: Reports duplicate font sizes.
  164.  
  165. Bit: 0x00000800
  166. Symbolic name: GACF_DELAYHWHNDSHAKECHK
  167. Meaning: Don't check hardware handshaking on SetCommState().Do not check hardware 
  168. handshaking (CTS and DSR) on SetCommState().  (Reverts to 30 behavior.) Packrat 
  169. could not Dial.  It only checked for DSR, but this is not set until carrier detect.  
  170. A bug existed in win30 where SetCommState never checked DSR and CTS.  If a serial 
  171. printer was offline, data would be sent to the comm port anyway, causing lost data.
  172. Apps:Packrat         packrat=0x0800
  173.     Problem: Packrat didn't dial using modem on comm 2.
  174. Microcourier    mcourier=0x800
  175.     Problem: Couldn't connect to modem using comm 2.
  176.  
  177. Bit: 0x00001000
  178. Symbolic name:    GACF_ENUMHELVNTMSRMN
  179. Meaning: Enumerates TmsRmn and Helv. Some apps are broken because they relied on 3.0 
  180. fonts Helv and Tms Rmn by name.  Font Substitution covers much of these problems but 
  181. we cannot legally enumerate Helv and Tms Rmn for future apps, so it was dropped. We 
  182. still have the exact same fonts, but now under the names MS Sans Serif and MS Serif, 
  183. and will enumerate them as Helv and Tms Rmn when this bit is set.  (We are allowed 
  184. to do this for backwards compatibility.)
  185. Apps: Spinnaker +    plus=0x01000
  186.     Problem: Text alignment and spacing problems in buttons and titles.  Fix only 
  187. works if Smallfonts come after serif and sans serif entries.  Setup does this 
  188. automatically.
  189. Milestones, etc.milesv3=0x1000
  190.     Problem: Text is unreadable when the app is started.  App does its own font 
  191. mapping and gets confused when it can't find Tms Rmn.
  192. Guide        guide=0x1000
  193.     Problem: Text problems.
  194. Excel        Excel=0x1000
  195.     Problem: Can't get past point where you have to enter a point size in the 
  196. tutorial.  
  197. WordPerfect    win2wwrs=0x1210
  198.     Problem: Uses a vector font for TmsRmn.
  199.  
  200. Bit: 0x00002000
  201. Symbolic name:    GACF_ENUMTTNOTDEVICE
  202. Meaning: Turns off DEVICE_FONTTYPE. Some apps fail to enumerate more that one size 
  203. of TrueType fonts because they interpret the DEVICE_FONTTYPE flag incorrectly.  They 
  204. assume the font must be device resident and disregard the case where the font is 
  205. downloaded (as TT can be.)  Therefore, when TT is correctly enumerated with the 
  206. device bit set, the apps check the device capabilities to see if the printer can 
  207. scale fonts.  If the device cannot, the app assumes one
  208. size of for the current font.  This problem is not seen on postscript printers which 
  209. can download and scale fonts, nor on dot matrix printers which cannot download 
  210. fonts.  This Compatibility bit simply checks all the above conditions and 
  211. selectively turns the DEVICE_FONTTYPE off.
  212. Apps:Pagemaker 4.0    pm4=0x2000
  213.     Problem: Not all point sizes listed for some printers.
  214. Designer 3.1    designer=0x2000
  215.     Problem: Font size reverts to 6 point when selecting a tt font in the font 
  216. dialog.
  217. Ascend 3.1    planner=0x2000
  218.     Problem: TT fonts only allow one point size.
  219. MGXDraw 3.0    draw=0x2000
  220.     Problem: Shows no font sizes for TT fonts.
  221. AccPack        winsim=0x2000
  222.     Problem: Lists only one point size for TT fonts.
  223. Charisma        charisma=0x2000
  224.     Problem: Not all point sizes listed for some printers.
  225. Persuasion    pr2=0x2000
  226.     Problem: Lists only one point size for TT fonts.
  227. JustWrite        jw=0x42080
  228.     Problem: Lists only one or two point sizes for TT fonts.
  229.  
  230. Bit: 0x00004000
  231. Symbolic name:    GACF_SUBTRACTCLIPSIBS
  232. Meaning:     This flag affects the way window invalidation works for non-
  233. WS_CLIPSIBLINGS parent windows and their children (e.g., dialog boxes and dialog 
  234. controls).  Normally, if two children of a non-WS_CLIPSIBLING parent overlap, and an 
  235. area that contains both of those windows is invalidated (either by a call to 
  236. InvalidateRect or through window rearrangement), both of the windows will get 
  237. invalidated, even if one or both is WS_CLIPSIBLINGS. With GACF_SUBTRACTCLIPSIBS, any 
  238. sibling window underneath a WS_CLIPSIBLINGS window will not be invalidated in the 
  239. part of the window that is beneath the
  240. WS_CLIPSIBLINGS window.  This situation arises most commonly when windows that are 
  241. supposed to appear overlapped don't seem to overlap properly.  Applications that 
  242. implement dropdown combo boxes as child windows of dialog boxes will exhibit this 
  243. problem (e.g., Lotus Notes 2.1 drive dropdowns).  It's often hard to tell whether a 
  244. dropdown is implemented as a top-level window (e.g., the Windows system combo boxes) 
  245. or as a child window -- if there seem to be overlapping
  246. problems, then GACF_SUBTRACTCLIPSIBS could be the solution.
  247. Apps: Lotus Notes 2.0 & 1    _BNOTES=0x24000
  248.     Problem: Pull down drive list box pops down behind a list box which is already 
  249. on the screen.
  250. Ingress        wagl=0x4000
  251.               waglr=0x4000
  252.     Problem: Overlapping child controls.
  253.  
  254. Bit: 0x00008000
  255. Symbolic name: GACF_FORCETTGRAPHICS
  256. Meaning: 
  257. Apps: Freelance    rem=0x8022
  258.     Problem: Freelance wouldn't print TT unless print TT as graphics was selected.
  259.  
  260. Bit: 0x00010000
  261. Symbolic name: GACF_NOHRGN1
  262. Meaning:  This bit affects applications that depend on a bug in the 3.0 
  263. GetUpdateRect() function.  Under 3.0, GetUpdateRect would not always return the 
  264. rectangle in logical DC coordinates: if the entire window was invalid, the rectangle 
  265. was sometimes returned in window coordinates.  This bug was fixed for 3.0 and 3.1 
  266. apps in Windows 3.1: coordinates are ALWAYS returned in logical coordinates.  This 
  267. bit re-introduces the bug in GetUpdateRect(), for those applications that depend on 
  268. this behavior.
  269. Apps:MSDraw    ED=0x00010000
  270.     Problem: Canvas not redrawn properly opening specific MSDraw objects in 
  271. Winword.
  272.  
  273. Bit: 0x00020000
  274. Symbolic name: GACF_NCCALCSIZEONMOVE
  275. Meaning: 3.1 optimized WM_NCCALCSIZE if a window was just moving, where 3.0 always 
  276. sent it.  This bit causes it to be sent always, as in 3.0.
  277. Apps: Lotus Notes    _BNOTES=0x24000
  278.     Problem: Navigator bar of window fails to redraw when the window is moved 
  279. across the desktop.
  280.  
  281. Bit: 0x00040000
  282. Symbolic name: GACF_SENDMENUDBLCLK
  283. Meaning: Passes double-clicks on a menu bar on to the app.  With this bit set, if 
  284. the user double clicks on the menu bar when a menu is visible, we end processing of 
  285. the menu and pass the double click message on to the application.  This allows just 
  286. write to detect double click on the system menu of a maximized mdi child.
  287.     The normal (and expected) behaviour is for Windows to detect the
  288. double click on a sys menu of  a maximized child and send the app a
  289. WM_SYSCOMMAND SC_CLOSE message which is what happens with a non-maximized mdi child 
  290. window.
  291. Apps: Just Write    JW=0x00042080
  292.     Problem: Sub-editors (such as footer and header editors) couldn't be closed by 
  293. double-clicking the system menu.
  294.  
  295. Bit: 0x00080000
  296. Symbolic name: GACF_30AVGWIDTH
  297. Meaning: Changed the way we calculate avg width, this fixes it for postscript.  
  298. Scale all fonts by 7/8.  This flag has been added for TurboTax for printing with 
  299. pscript driver.  Turbo tax has hardcoded average width it uses for selecting fonts.
  300.     Since we changed the way we calculate avg width to match what is in TT, Turbo 
  301. tax is broken.
  302. Apps: TurboTax        turbotax=0x80000
  303.     Problem: 1040 tax forms wouldn't print correctly.
  304.  
  305. If/when the application has fixed the problem, they can mark themselves as a 3.1 
  306. only app, in which case the compatibility bits won't be used.  If the app wants to 
  307. remain a 3.0 app, they can change the module name or edit win.ini.
  308.  
  309. Additional reference words: 3.10
  310. .END:
  311.  
  312.